home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / OpenGL 1.0 SDK / Source / Libraries / glut / glut_cursor.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  3.2 KB  |  136 lines  |  [TEXT/CWIE]

  1. /* Copyright (c) Mark J. Kilgard, 1994. */
  2.  
  3. /* This program is freely distributable without licensing fees 
  4.    and is provided without guarantee or warrantee expressed or 
  5.    implied. This program is -not- in the public domain. */
  6.  
  7. #include "glut.h"
  8. #include "glutint.h"
  9.  
  10. #define MAX_CURSOR  23
  11. #define BASE_CURSOR 1000
  12.  
  13. static CursHandle cursorTable[MAX_CURSOR] = {
  14.   NULL,   /* GLUT_CURSOR_RIGHT_ARROW         */
  15.   NULL,   /* GLUT_CURSOR_LEFT_ARROW          */
  16.   NULL,   /* GLUT_CURSOR_INFO                */
  17.   NULL,   /* GLUT_CURSOR_DESTROY             */
  18.   NULL,   /* GLUT_CURSOR_HELP                */
  19.   NULL,   /* GLUT_CURSOR_CYCLE               */
  20.   NULL,   /* GLUT_CURSOR_SPRAY               */
  21.   NULL,   /* GLUT_CURSOR_WAIT                */
  22.   NULL,   /* GLUT_CURSOR_TEXT                */
  23.   NULL,   /* GLUT_CURSOR_CROSSHAIR           */
  24.   NULL,   /* GLUT_CURSOR_UP_DOWN             */
  25.   NULL,   /* GLUT_CURSOR_LEFT_RIGHT          */
  26.   NULL,   /* GLUT_CURSOR_TOP_SIDE            */
  27.   NULL,   /* GLUT_CURSOR_BOTTOM_SIDE         */
  28.   NULL,   /* GLUT_CURSOR_LEFT_SIDE           */
  29.   NULL,   /* GLUT_CURSOR_RIGHT_SIDE          */
  30.   NULL,   /* GLUT_CURSOR_TOP_LEFT_CORNER     */
  31.   NULL,   /* GLUT_CURSOR_TOP_RIGHT_CORNER    */
  32.   NULL,   /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */
  33.   NULL,   /* GLUT_CURSOR_BOTTOM_LEFT_CORNER  */
  34.   NULL,   /* GLUT_CURSOR_INHERIT             */
  35.   NULL,   /* GLUT_CURSOR_NONE                */
  36.   NULL    /* GLUT_CURSOR_FULL_CROSSHAIR      */
  37. };
  38.  
  39. void glutSetCursor(int cursorID)
  40. {
  41.     switch(cursorID)
  42.     {
  43.         case GLUT_CURSOR_RIGHT_ARROW:
  44.             cursorID = 0;
  45.         break;
  46.         case GLUT_CURSOR_LEFT_ARROW:
  47.             cursorID = 1;
  48.         break;
  49.         case GLUT_CURSOR_INFO:
  50.             cursorID = 2;
  51.         break;
  52.         case GLUT_CURSOR_DESTROY:
  53.             cursorID = 3;
  54.         break;
  55.         case GLUT_CURSOR_HELP:
  56.             cursorID = 4;
  57.         break;
  58.         case GLUT_CURSOR_CYCLE:
  59.             cursorID = 5;
  60.         break;
  61.         case GLUT_CURSOR_SPRAY:
  62.             cursorID = 6;
  63.         break;
  64.         case GLUT_CURSOR_WAIT:
  65.             cursorID = 7;
  66.         break;
  67.         case GLUT_CURSOR_TEXT:
  68.             cursorID = 8;
  69.         break;
  70.         case GLUT_CURSOR_CROSSHAIR:
  71.             cursorID = 9;
  72.         break;
  73.         case GLUT_CURSOR_UP_DOWN:
  74.             cursorID = 10;
  75.         break;
  76.         case GLUT_CURSOR_LEFT_RIGHT:
  77.             cursorID = 11;
  78.         break;
  79.         case GLUT_CURSOR_TOP_SIDE:
  80.             cursorID = 12;
  81.         break;
  82.         case GLUT_CURSOR_BOTTOM_SIDE:
  83.             cursorID = 13;
  84.         break;
  85.         case GLUT_CURSOR_LEFT_SIDE:
  86.             cursorID = 14;
  87.         break;
  88.         case GLUT_CURSOR_RIGHT_SIDE:
  89.             cursorID = 15;
  90.         break;
  91.         case GLUT_CURSOR_TOP_LEFT_CORNER:
  92.             cursorID = 16;
  93.         break;
  94.         case GLUT_CURSOR_TOP_RIGHT_CORNER:
  95.             cursorID = 17;
  96.         break;
  97.         case GLUT_CURSOR_BOTTOM_RIGHT_CORNER:
  98.             cursorID = 18;
  99.         break;
  100.         case GLUT_CURSOR_BOTTOM_LEFT_CORNER:
  101.             cursorID = 19;
  102.         break;
  103.         case GLUT_CURSOR_INHERIT:
  104.             cursorID = 20;
  105.         break;
  106.         case GLUT_CURSOR_NONE:
  107.             cursorID = 21;
  108.         break;
  109.         case GLUT_CURSOR_FULL_CROSSHAIR:
  110.             cursorID = 22;
  111.         break;
  112.         default:
  113.             __glutWarning("glutSetCursor: cursor id out of range");
  114.         return;
  115.     }
  116.     
  117.     if(!__glutCurrentWindow)
  118.     {
  119.         __glutWarning("glutSetCursor: no active window");
  120.         return;
  121.     }
  122.     
  123.     if(!cursorTable[cursorID])
  124.     {
  125.         cursorTable[cursorID] = GetCursor(BASE_CURSOR + cursorID);
  126.         if(cursorTable[cursorID]) HLock((Handle) cursorTable[cursorID]);
  127.     }
  128.     
  129.     if(cursorTable[cursorID])
  130.     {
  131.         SetCursor(*cursorTable[cursorID]);
  132.  
  133.         __glutCurrentWindow->cursor = cursorID;
  134.     }
  135. }
  136.